home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / misc / IOBlixDevKitR2.lha / IOBlixDevKit / C / include / ioblix / parport.h < prev    next >
C/C++ Source or Header  |  1999-02-01  |  5KB  |  149 lines

  1. /*
  2. **      $VER: ioblix/parport.h 37.1 (3.1.99)
  3. **
  4. **      include file for access to IOBlix parallel ports
  5. **
  6. **      (C) Copyright 1998,1999 Thore Böckelmann
  7. **      All Rights Reserved.
  8. */
  9.  
  10. #ifndef IOBLIX_PARPORT_H
  11. #define IOBLIX_PARPORT_H 1
  12.  
  13. /* if ParPort on a ZorroII and a clock port should NOT be accessed within       */
  14. /* one program then you can #define IOBLIX12 to build two different programs    */
  15. /* from one source without any modifications. Else you have two different       */
  16. /* definitions for both ports                                                   */
  17.  
  18. #ifndef IOBLIX12
  19.     struct ParPort {
  20.         volatile UBYTE data;
  21.         volatile UBYTE pad1[15];
  22.         volatile UBYTE status;
  23.         volatile UBYTE pad2[15];
  24.         volatile UBYTE control;
  25.         volatile UBYTE pad3[15];
  26.         volatile UBYTE epp_aport;
  27.         volatile UBYTE pad4[15];
  28.         volatile UBYTE epp_dport1;
  29.         volatile UBYTE pad5[15];
  30.         volatile UBYTE epp_dport2;
  31.         volatile UBYTE pad6[15];
  32.         volatile UBYTE epp_dport3;
  33.         volatile UBYTE pad7[15];
  34.         volatile UBYTE epp_dport4;
  35.         volatile UBYTE pad8[15];
  36.         volatile UBYTE config_a;
  37.         volatile UBYTE pad9[15];
  38.         volatile UBYTE config_b;
  39.         volatile UBYTE pada[15];
  40.         volatile UBYTE econtrol;
  41.         volatile UBYTE padb[15];
  42.         UBYTE padx[0x1000-176];
  43.     };
  44.  
  45.     struct ParPort12 {
  46.         volatile UBYTE pad0;
  47.         volatile UBYTE data;
  48.         volatile UBYTE pad1[3];
  49.         volatile UBYTE status;
  50.         volatile UBYTE pad2[3];
  51.         volatile UBYTE control;
  52.         volatile UBYTE pad3[3];
  53.         volatile UBYTE epp_aport;
  54.         volatile UBYTE pad4[3];
  55.         volatile UBYTE epp_dport1;
  56.         volatile UBYTE pad5[3];
  57.         volatile UBYTE epp_dport2;
  58.         volatile UBYTE pad6[3];
  59.         volatile UBYTE epp_dport3;
  60.         volatile UBYTE pad7[3];
  61.         volatile UBYTE epp_dport4;
  62.         volatile UBYTE pad8[3];
  63.         volatile UBYTE config_a;
  64.         volatile UBYTE pad9[3];
  65.         volatile UBYTE config_b;
  66.         volatile UBYTE pada[3];
  67.         volatile UBYTE econtrol;
  68.     };
  69. #else
  70.     struct ParPort {
  71.         volatile UBYTE pad0;
  72.         volatile UBYTE data;
  73.         volatile UBYTE pad1[3];
  74.         volatile UBYTE status;
  75.         volatile UBYTE pad2[3];
  76.         volatile UBYTE control;
  77.         volatile UBYTE pad3[3];
  78.         volatile UBYTE epp_aport;
  79.         volatile UBYTE pad4[3];
  80.         volatile UBYTE epp_dport1;
  81.         volatile UBYTE pad5[3];
  82.         volatile UBYTE epp_dport2;
  83.         volatile UBYTE pad6[3];
  84.         volatile UBYTE epp_dport3;
  85.         volatile UBYTE pad7[3];
  86.         volatile UBYTE epp_dport4;
  87.         volatile UBYTE pad8[3];
  88.         volatile UBYTE config_a;
  89.         volatile UBYTE pad9[3];
  90.         volatile UBYTE config_b;
  91.         volatile UBYTE pada[3];
  92.         volatile UBYTE econtrol;
  93.     };
  94. #endif
  95.  
  96. #define cfifo       config_a
  97. #define ecp_afifo   data
  98. #define ecp_dfifo   config_a
  99. #define tfifo       config_a
  100.  
  101. /* ParPort.control */
  102. #define PARPORT_CONTROL_STROBE      0x01
  103. #define PARPORT_CONTROL_AUTOFD      0x02
  104. #define PARPORT_CONTROL_INIT        0x04
  105. #define PARPORT_CONTROL_SELECT      0x08
  106. #define PARPORT_CONTROL_ACKINT      0x10
  107. #define PARPORT_CONTROL_DIRECTION   0x20
  108.  
  109. /* ParPort.status */
  110. #define PARPORT_STATUS_EPP_TIMEOUT  0x01
  111. #define PARPORT_STATUS_ERROR        0x08
  112. #define PARPORT_STATUS_SELECT       0x10
  113. #define PARPORT_STATUS_PAPEROUT     0x20
  114. #define PARPORT_STATUS_ACK          0x40
  115. #define PARPORT_STATUS_BUSY         0x80
  116.  
  117. /* ParPort.econtrol */
  118. #define PARPORT_ECONTROL_FAULT      0x10
  119. #define PARPORT_ECONTROL_DMA        0x08
  120. #define PARPORT_ECONTROL_INT        0x04
  121. #define PARPORT_ECONTROL_FIFO_F     0x02
  122. #define PARPORT_ECONTROL_FIFO_E     0x01
  123. #define PARPORT_ECONTROL_SPP        0x00
  124. #define PARPORT_ECONTROL_PS2        0x20
  125. #define PARPORT_ECONTROL_PPF        0x40
  126. #define PARPORT_ECONTROL_ECP        0x60
  127. #define PARPORT_ECONTROL_EPP        0x80
  128. #define PARPORT_ECONTROL_TST        0xc0
  129. #define PARPORT_ECONTROL_CFG        0xe0
  130. #define PARPORT_ECONTROL_MODE_MASK  0xe0
  131.  
  132.  
  133. /* structure returned by AllocECPInfo() */
  134. /* all fields are READ-ONLY             */
  135.  
  136. struct ECPProbeInformation {
  137.     BOOL epi_IsIEEE1284Compatible;      /* device is IEEE1284 compatible?   */
  138.     UBYTE epi_Pad0;
  139.     UBYTE *epi_FullInformation;         /* complete information string      */
  140.     UBYTE *epi_Manufacturer;            /* device manufacturer              */
  141.     UBYTE *epi_Model;                   /* device model                     */
  142.     UBYTE *epi_Class;                   /* device class                     */
  143.     UBYTE *epi_CommandSet;              /* supported command sets           */
  144.     UBYTE *epi_Description;             /* device description               */
  145. };
  146.  
  147. #endif /* IOBLIX_PARPORT_H */
  148.  
  149.